'use strict';
module.exports = {
	/**
	 * XXXnameXXX
	 * @url admin/datas/kh/today_data 前端调用的url参数地址
	 * data 请求参数
	 * @param {String} params1  参数1
	 */
	main: async (event) => {
		const db = uniCloud.database();
		const $ = db.command.aggregate;
		let {
			data = {}, userInfo, util, filterResponse, originalParam
		} = event;
		let {
			customUtil,
			uniID,
			config,
			pubFun,
			vk,
			_
		} = util;
		let {
			uid,
			jrxh,
			todayStart
		} = data;
		let res = {
			code: 0,
			msg: ""
		};
		// _add_time:_.and(_.gt(StartTime), _.lt(EndTime)),
		// 业务逻辑开始-----------------------------------------------------------
		res.jrxh = jrxh;
		//查询今日新增用户数
		res.num = await vk.baseDao.count({
			dbName: "uni-id-users",
			whereJson: {
				register_date: _.gte(todayStart)
			}
		});

		//查询今日充值总金额
		res.jrczje = await vk.baseDao.sum({
			dbName: "a_recharge",
			fieldName: "shifu_amount", // 需要求和的字段名
			whereJson: {
				pay_status: 1,
				_add_time: _.gte(todayStart)
			}
		});

		//查询今日充值笔数
		res.jrczbs = await vk.baseDao.count({
			dbName: "a_recharge",
			whereJson: {
				pay_status: 1,
				_add_time: _.gte(todayStart)
			}
		});

		//新用户付费最大值
		// res.xyhffupz = await vk.baseDao.max({
		// 	dbName: "a_recharge",
		// 	fieldName: "shifu_amount", // 需要取最大值的字段名
		// 	whereJson: {
		// 		pay_status: 1,
		// 		user_register_date: _.gte(todayStart),
		// 		_add_time: _.gte(todayStart)
		// 	}
		// });

		//查询今日新用户充值总金额
		res.xyhczje = await vk.baseDao.sum({
			dbName: "a_recharge",
			fieldName: "shifu_amount", // 需要求和的字段名
			whereJson: {
				pay_status: 1,
				user_register_date: _.gte(todayStart)
			}
		});


		//====查询充值订单里，一共有多少个新付费用户====
		let xffyh = await db.collection('a_recharge')
			.aggregate()
			.match({
				pay_status: 1, //状态为支付完成
				user_register_date: _.gte(todayStart),
				_add_time: _.gte(todayStart)
			})
			.group({
				_id: null,
				user_count: $.addToSet('$user_id')
			})
			.end()
		res.xffyh = xffyh.data.length ? xffyh.data[0].user_count.length : 0
		//====计算新付费用户结束====


		//====查询今日充值人数====
		let jrczrs = await db.collection('a_recharge')
			.aggregate()
			.match({
				pay_status: 1, //状态为支付完成
				_add_time: _.gte(todayStart)
			})
			.group({
				_id: null,
				user_count: $.addToSet('$user_id')
			})
			.end()
		res.jrczrs = jrczrs.data.length ? jrczrs.data[0].user_count.length : 0
		//====查询今日充值人数结束====
		

		//查询3日前的一天带来的用户的充值总金额，比如今日9.4，则计算9.1日新增的用户，这三天来累计充了多少钱
		let old_time = await vk.pubfn.getDayOffsetStartAndEnd(-3, new Date())
		res.srczje = await vk.baseDao.sum({
			dbName: "a_recharge",
			fieldName: "shifu_amount", // 需要求和的字段名
			whereJson: {
				pay_status: 1,
				register_date: _.and(_.gt(old_time.startTime), _.lt(old_time.endTime))
			}
		});

		// 今日roi ==》3日roi  3天前的一天带来的用户累计充值/今天的消耗  
		res.jrroi = vk.pubfn.toDecimal(res.srczje / jrxh, 2)


		// 业务逻辑结束-----------------------------------------------------------
		return res;
	}
}
